package com.example.werewolf.entity;

import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.util.Arrays;
import java.util.List;

@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class GamePhase {
    private String phaseName;
    private List<String> possibleActions;
    private List<String> availableRolesWithSkills;


    @Deprecated
    public static List<GamePhase> getGamePhase() {
        GamePhase phase0 = GamePhase.builder()
                .phaseName("首夜行动")
                .possibleActions(Arrays.asList("狼人行动", "女巫行动", "预言家行动", "上警举手")) //
                .availableRolesWithSkills(Arrays.asList("狼人", "女巫", "预言家"))
                .build();
        GamePhase phase1 = GamePhase.builder()
                .phaseName("第一天白天")
                .possibleActions(Arrays.asList("依次发言", "投票警长")) //
                .availableRolesWithSkills(Arrays.asList("狼人", "猎人"))
                .build();
//        // 行动完后，主持人播报：警长结果，首夜死亡情况
//        GamePhase phase11 = GamePhase.builder()
//                .phaseName("第一天白天警长选定发言")
//                .possibleActions(Arrays.asList("依次发言", "放逐投票"))
//                .availableRolesWithSkills(Arrays.asList("狼人", "猎人"))
//                .build();
//        GamePhase phase2 = GamePhase.builder()
//                .phaseName("第一天夜晚")
//                .possibleActions(Arrays.asList("狼人行动", "女巫行动", "预言家行动"))
//                .availableRolesWithSkills(Arrays.asList("狼人", "女巫", "预言家"))
//                .build();
//        // 行动完后，主持人播报：第一夜死亡情况
//        GamePhase phase3 = GamePhase.builder()
//                .phaseName("第二天白天警长选定发言")
//                .possibleActions(Arrays.asList("依次发言", "放逐投票"))
//                .availableRolesWithSkills(Arrays.asList("狼人", "猎人"))
//                .build();
//        GamePhase phase4 = GamePhase.builder()
//                .phaseName("第二天夜晚")
//                .possibleActions(Arrays.asList("狼人行动", "女巫行动", "预言家行动"))
//                .availableRolesWithSkills(Arrays.asList("狼人", "女巫", "预言家"))
//                .build();
        // 行动完后，主持人播报：第二夜死亡情况phase1, phase11, phase2
        return Arrays.asList(phase0, phase1);
//        GamePhase phase0 = GamePhase.builder()
//                .phaseName("首夜行动")
//                .possibleActions(Arrays.asList("狼人行动"))
//                .availableRolesWithSkills(Arrays.asList("狼人", "女巫", "预言家"))
//                .build();
//        GamePhase phase0 = GamePhase.builder()
//                .phaseName("第一天白天行动")
//                .possibleActions(Arrays.asList(ActionType.WEREWOLF_KILL.getDescription(),
//                        ActionType.WITCH_ACTION.getDescription(), ActionType.PROPHET_CHECK.getDescription(), ActionType.EXILE_VOTE.getDescription()))
//                .availableRolesWithSkills(Arrays.asList("狼人", "骑士"))
//                .build();
//        return Arrays.asList(phase0);
    }
    /*
    首夜动作：狼人行动（狼队商量战术并给出刀人），女巫行动，预言家行动，上警举手
    第一天白天行动：{随机某角色发言}xx号玩家发言（每位玩家发言一次，递增发言）；然后警下玩家投票场上玩家，主持人汇总警下投票情况；主持人宣布首夜死亡情况；{警长选择递增发言还是递减发言}，接着依次发言；
    第一天投票行动：依次投票被放逐的玩家（警长拥有两张票权，只能投给一个人）；主持人汇总票数并宣布放逐玩家；放逐玩家进行遗言发言，发言结束后是否选择发动技能
    第一天夜晚：狼人行动 --> 女巫行动 --> 预言家行动
    第二天白天：主持人宣布死亡情况 --> 警长选择发言（左侧递减发言，右侧递增发言） --> 玩家发言
    第二天投票阶段：全部存活的玩家投票 --> 主持人汇总票数并宣布票数最高淘汰 --> 淘汰玩家进行放逐发言，发言结束后选择是否发动技能。
    第二天夜晚：
    第三天白天发言：
    第三天投票阶段
     */
}

